/*****************************************************************************************
 **  Author:dgz master
 **  Contact：jiduxiong@dagongzao.com
 **
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码，可以扩展一些自定义页面或者重新配置生成的代码

import { ElMessage, ElMessageBox } from 'element-plus'
import { parseMinWidth } from 'element-plus/es/components/table/src/util.mjs'
import { fa } from 'element-plus/es/locales.mjs'
import { getWarehouseByRole } from '../customsJs/WarehouseRole'

let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: '',
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelRight: '',
    modelFooter: '',
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前，
      //示例：在按钮的最前面添加一个按钮
      //   this.buttons.unshift({  //也可以用push或者splice方法来修改buttons数组
      //     name: "按钮", //按钮名称
      //     icon: "el-icon-document", //按钮图标：https://element.eleme.cn/#/zh-CN/component/icon
      //     type: "primary", //按钮样式:https://element-plus.gitee.io/zh-CN/component/button.html
      //     //color:"#eee",//自定义按钮颜色
      //     onClick: function () {
      //       this.$message.success("点击了按钮");
      //     }
      //   });
      //示例：设置修改新建、编辑弹出框字段标签的长度
      // this.boxOptions.labelWidth = 150;
      //树形结点的id字段
      this.rowKey = 'StockTaskId'
      //父级id字段
      this.rowParentField = 'MainTaskId'
      this.pagination.size = 30
      this.queryFields = ['TaskType', 'TaskStatus', 'TaskBarcode']
    },
    async onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });

      this.createBtnByColumn()
      this.detailOptions.edit = false
      const WarehouseListByRole = await getWarehouseByRole()
      this.searchFormOptions.flat().forEach((i) => {
        if (i.field == 'WarehouseId') {
          i.data = WarehouseListByRole
        }
      })

    },
    createBtnByColumn() {
      //表格上添加自定义按钮
      this.columns.push({
        title: '操作',
        field: '操作',
        width: 200,
        align: 'left', // 'center',
        render: (h, { row, column, index }) => {
          return (
            <div>
              <el-space wrap>
                <el-link
                  onClick={($e) => {
                    this.hanleDone(row, $e)
                  }}
                  v-show={row.TaskStatus != 1 && row.TaskStatus != 3}
                  type="success"
                >
                  强制完成
                </el-link>
                <el-link
                  onClick={($e) => {
                    this.hanleSend(row, $e)
                  }}
                  v-show={row.TaskStatus != 1 && row.TaskStatus != 3 && row.SendWcsStatus == 0 && row.MainTaskId == 0}
                  type="success"
                >
                  手动下发
                </el-link>
                <el-link
                  onClick={($e) => {
                    this.hanleCancel(row, $e)
                  }}
                  v-show={(row.TaskStatus == 0 || row.TaskStatus == 2) && row.MainTaskId == 0}
                  type="error"
                >
                  撤销
                </el-link>
              </el-space>
            </div>
          )
        },
      })
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false，则不会执行查询
      return true
    },
    searchAfter(result) {
      //查询后，result返回的查询数据,可以在显示到表格前处理表格的值
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      return true
    },
    updateBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true
    },
    delBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true
    },
    addAfter(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      //添加后刷新字典

      return true
    },
    updateAfter(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      //添加后刷新字典
      return true
    },
    delAfter(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      //添加后刷新字典

      return true
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后，可以在此处写逻辑，如，从后台获取数据
      //(1)判断是编辑还是新建操作： this.currentAction=="Add";
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段="xxx";
      //如果需要给下拉框设置默认值，请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看：console.log(this.editFormOptions)
      if (row.MainTaskId == 0) {
        // 隐藏详情
        this.hasDetail = false
      } else {
        this.hasDetail = true
      }
    },

    /**
     * 撤销任务
     * @param {*} row 当前行数据
     * @param {*} e 当前点击的dom
     */
    hanleCancel(row, e) {
      ElMessageBox.confirm(`确定要撤销${row.TaskNo}吗?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        center: true,
        type: 'warning',
      }).then((r) => {
        let url = this.$api.task + 'ManualCancelTask'
        let params = {
          mainTaskId: row.StockTaskId,
        }
        this.http.get(url, params).then((r) => {
          this.search()
          this.$message.success('撤销成功')
        })
      })
    },
    /**
     * 手动下发任务
     * @param {*} row 当前行数据
     * @param {*} e 当前点击的dom
     */
    hanleSend(row, e) {
      ElMessageBox.confirm(`确定要手动下发任务${row.TaskNo}吗?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        center: true,
        type: 'warning',
      }).then((r) => {
        let url = this.$api.task + 'ManualSendTaskToWCS'
        let params = {
          mainTaskId: row.StockTaskId,
        }
        this.http.get(url, params).then((r) => {
          this.search()
          this.$message.success('下发成功')
        })
      })
    },
    /**
     * 强制完成
     * @param {*} row 当前行数据
     * @param {*} e 当前点击的dom
     */
    hanleDone(row, e) {
      //ElMessageBox.prompt("输入强制完成原因", "Tip", {
      ElMessageBox.confirm(`是否强制完成`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
      })
        .then(({ value }) => {
          let url = this.$api.task + 'ManualCompleteTask'
          let params = {
            stockTaskId: row.StockTaskId,
          }
          this.http.get(url, params).then((r) => {
            this.$message.success('操作成功')
            this.search()
          })
        })
        .catch(() => {})
    },
  },
}
export default extension
